package zhongbo.java.air.dictionary.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.UUID;

/**
 * 说明：
 *
 * @author 钟波dellNotebook
 * @since 2025年03月30日 星期日 19:33:03
 */
@ApiModel("飞机信息")
@TableName("air_aircraft")
@Data
public class AirAirCraft {

    /**
     * UUID 主键
     */
    @TableId(type = IdType.ASSIGN_UUID)
    @ApiModelProperty(value = "UUID主键")
    private String id;

    /**
     * ICAO 24位地址码（唯一业务编号）
     */
    @NotBlank(message = "ICAO 24位地址码（唯一业务编号）不能为空")
    @Pattern(regexp = "^[A-Z0-9]{6}$", message = "ICAO 24位地址码长度需为6位，且只能包含大写字母和数字")
    @ApiModelProperty(value = "ICAO 24位地址码",example = "ABCDEF")
    private String icaoCode;

    /**
     * 飞机注册号（如 B-1234）
     */

    @NotBlank(message = "飞机注册号不能为空")
    @Size(min = 5, max = 10, message = "注册号长度需在5到10位之间")
    @ApiModelProperty(value = "飞机注册号",example = "AB123")
    private String registration;

    /**
     * 所属航空公司
     */
    @NotBlank(message = "所属航空公司不能为空")
    @Size(min = 2, max = 50, message = "航空公司名称长度需在2到50位之间")
    @ApiModelProperty(value = "所属航空公司",example = "成都")
    private String airline;

    /**
     * 机型（枚举值示例：B737-800, A320-200）
     */
    @NotBlank(message = "机型不能为空")
    @ApiModelProperty(value = "机型",example = "B737-800")

    private String aircraftType;

    /**
     * 状态（枚举值：ACTIVE-运营中, MAINTENANCE-维护中, RETIRED-已退役）
     */
    @NotBlank(message = "飞机状态不能为空")
    @Pattern(regexp = "^(ACTIVE|MAINTENANCE|RETIRED)$", message = "飞机状态只能为ACTIVE,MAINTENANCE,RETIRED")
    @ApiModelProperty(value = "飞机状态",example = "ACTIVE")

    private String status;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建时间",example = "2025-3-31 16:33:33")

    private Date createTime;
    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "更新时间",example = "2025-3-31 16:33:33")

    private Date updateTime;
}
